import { MessageTypeEnum } from '@/enums/messageTypeEnum';
import { MessageLevelEnum } from '@/enums/messageLevelEnum';
import { MessageSendWayEnum } from '@/enums/messageSendWayEnum';

/** 输入DTO：查询消息 */
export interface QueryMessageInputDto {
  /** 编号 */
  Id: string | bigint;

  /** 消息图标 */
  Icon?: string | null;
  /** 消息类型 */
  MessageType: MessageTypeEnum;
  /** 消息级别 */
  MessageLevel: MessageLevelEnum;
  /** 标题 */
  Title?: string | null;
  /** 内容 */
  Content?: string | null;
  /** 查询字符串 */
  QueryString?: string | null;

  /** 报告名称 */
  ReportName?: string | null;
  /** 报告模板 */
  ReportTemplate?: string | null;

  /** 发送方式集合 */
  SendWays: MessageSendWayEnum[];
  /** 发送至用户集合 */
  ToUsers: string[];
  /** 发送至组织机构集合 */
  ToOrganizations: string[];
  /** 发送至角色集合 */
  ToRoles: string[];

  /** Cron表达式 */
  CronExpression?: string | null;
  /** 是否启用 */
  Enabled: boolean;
  /** 始终发送(false时查询结果无数据则不发送) */
  AlwaysSend: boolean;

  /** 存储天数(0-365,0表示永久存储) */
  StorageDays: number;

  /** 数据版本 */
  DataVersion: string | bigint;
}

/** 输出DTO：查询消息 */
export interface QueryMessageOutputDto extends QueryMessageInputDto {
  /** 方法名 */
  Method?: string | null;

  /** 下次发送时间 */
  NextSendTime?: Date | null;

  /** 创建者编号 */
  CreatorId?: string | bigint | null;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId?: string | bigint | null;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}
